Cú pháp Lisp

  • Lisp có cú pháp thuần nhất. Cấu trúc chung của Lisp là danh sách liên kết biểu thị bởi cặp ngoặc đơn, bên trong là các phần ngăn cách bởi dấu trống (space).

(phần-1 phần-2 phần-3...)

Trong đó mỗi phần có thể là:

Ví dụ:

  • Hàm căn bậc hai: (sqrt 2)
  • Lệnh in ra màn hình: (princ "Common Lisp")
  • Phép tính cộng trong đó hàm là toán tử: (+ 3 5)

Cú pháp như vậy được gọi chung là biểu thức S (S-expression hay Sexp). Một chương trình Lisp thực ra là một biểu thức S lớn mà mỗi phần của nó gồm nhiều biểu thức S con khác.

Một số cú pháp cụ thể của Lisp như sau:

  • Khai báo hàm
    (defun tên-hàm (danh-sách-tham-số) (nội-dung-của-hàm))
  • Gán
    (setq  tên-biến  giá-trị)
  • Khối lệnh
    (progn (lệnh-1)  (lệnh-2)...)
  • Chọn / rẽ nhánh
    1 (if (biểu-thức-điều-kiện) (nhánh-đúng) (nhánh-sai))2 3 (cond4   ((biểu-thức-1) (nhánh-1))5   ((biểu-thức-2) (nhánh-2))6 ...7 )
  • Lặp
    1 (while (điều-kiện)2   (lệnh)3 )

Quy ước đặt tên

Trong thư viện chuẩn của Lisp, các hàm dạng logic (predicate) trả lại kết quả đúng (T) hoặc sai (NIL) đều kết thúc với chữ (p). Chẳng hạn: zerop là hàm kiểm tra một số bằng 0 hay không.

Quy ước đặt tên này không bắt buộc, nó có tác dụng với người lập trình (để dễ đọc và tiện gỡ lỗi) nhưng không có ý nghĩa với trình biên dịch.